package com.ruoyi.crm.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.crm.domain.CrmClearAccount;
import com.ruoyi.crm.domain.CrmOrderCollectPayMoney;
import com.ruoyi.crm.strategy.CrmOrderFlowStrategy;

/**
 * 项目结算表Service接口
 *
 * @author ruoyi
 * @date 2024-12-13
 */
public interface ICrmClearAccountService extends IService<CrmClearAccount>, CrmOrderFlowStrategy<CrmClearAccount> {
    /**
     * 查询项目结算表
     *
     * @param id 项目结算表主键
     * @return 项目结算表
     */
    public CrmClearAccount selectCrmClearAccountById(String id);

    /**
     * 查询项目结算表列表
     *
     * @param crmClearAccount 项目结算表
     * @return 项目结算表集合
     */
    public List<CrmClearAccount> selectCrmClearAccountList(CrmClearAccount crmClearAccount);

    /**
     * 新增项目结算表
     *
     * @param crmClearAccount 项目结算表
     * @return 结果
     */
    public int insertCrmClearAccount(CrmClearAccount crmClearAccount);

    /**
     * 修改项目结算表
     *
     * @param crmClearAccount 项目结算表
     * @return 结果
     */
    public int updateCrmClearAccount(CrmClearAccount crmClearAccount);

    /**
     * 批量删除项目结算表
     *
     * @param ids 需要删除的项目结算表主键集合
     * @return 结果
     */
    public int deleteCrmClearAccountByIds(String[] ids);

    /**
     * 删除项目结算表信息
     *
     * @param id 项目结算表主键
     * @return 结果
     */
    public int deleteCrmClearAccountById(String id);

    /**
     * 当没有结算数据后，初始化结算表
     * @param orderId
     * @return
     */
    CrmClearAccount orderClearInit(String orderId);

    /**
     * 获取项目结算表详细信息
     * @param orderId
     * @return
     */
    CrmClearAccount getInfoByOrderId(String orderId);

    /**
     * 审核
     * @param crmClearAccount
     */
    boolean audit(CrmClearAccount crmClearAccount);
}
